home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-07-28 | 2.8 KB | 130 lines | [TEXT/MPS ] |
- /*
- File: LogError.cp
-
- Contains: xxx put contents here xxx
-
- Written by: Tim Harnett
-
- Copyright: © 1994 by Apple Computer, Inc., all rights reserved.
-
- Change History (most recent first):
-
- <4> 2/21/95 TMH metrowerks compatiblity changes
- <3> 2/9/95 TMH added LimitErrorReport flag
- <2> 10/7/94 TMH added maxReport limiting
- <1> 10/6/94 TMH seperated from TMSAMSlot
- 10/4/94 TMH xxx put comment here xxx
-
- To Do:
- */
-
-
- #ifndef __RESOURCES__
- #include "Resources.h"
- #endif
-
-
- #ifndef __LogErrors__
- #include "LogErrors.h"
- #endif
-
- #ifndef __MSAMSlot__
- #include "MSAMSlot.h"
- #endif
-
- Boolean gLimitErrorReports = false; // set from resource
-
-
-
- //------------------------------------------------------------------------------------------
- Boolean GetLogEntry(short osErr,MailErrorLogEntryInfo& logEntry); // the compiler insists
- Boolean GetLogEntry(short osErr,MailErrorLogEntryInfo& logEntry)
- {
- // We get the table into memory and we want it kept there.
-
- static LogMessageTableEntry** pTable = 0;
- if( pTable == 0 ) {
- pTable = (LogMessageTableEntry**)GetResource('etbl', kLogErrorMapTable);
- DetachResource((Handle)pTable);
- HNoPurge((Handle)pTable);
- }
-
-
- // Set defaults -- arbitrary
- logEntry.errorResource = 1;
- logEntry.actionResource = 1;
- logEntry.errorType = kMailELEWarning;
- logEntry.errorCode = kMailMSAMErrorCode;
-
- if (pTable) {
-
- LogMessageTableEntry* pEntry = *pTable; // Caution! dereferenced handle.
-
- short lenTab = (short)(GetHandleSize((Handle)pTable) / sizeof(LogMessageTableEntry));
- for (short i = 1; i <= lenTab; ++i, ++pEntry) {
-
- if ( (pEntry->lowErr <= osErr) && (osErr <= pEntry->highErr)) { // is error in error range.
-
- if( (pEntry->reportCount < pEntry->maxReports) || !gLimitErrorReports ) {
-
- logEntry.errorResource = pEntry->errorIndex;
- logEntry.actionResource = pEntry->actionIndex;
- logEntry.errorType = pEntry->errorType;
- logEntry.errorCode = pEntry->errorCode;
-
- pEntry->reportCount++;
-
- return true;
-
- }
-
- }
- }
-
- }
-
- return false;
- }
-
-
- //-----------------------------------------------------------------------------
- void LogError(OSErr osErr,TMSAMSlot* slot)
- {
-
- if(osErr == errAlreadyLogged)
- return;
-
- // slot == 0 means its a MSAM level error
-
- MailErrorLogEntryInfo logEntry;
- PMSAMLogErrorPB pb;
-
-
- // Map the error # to the string & action index
-
-
- logEntry.version = kMailErrorLogEntryVersion;
-
- if( GetLogEntry(osErr,logEntry) ) {
-
- pb.logEntry = &logEntry;
- pb.msamSlotID = 0;
- if( slot != 0 )
- pb.msamSlotID = slot->GetSlotID();
-
- OSErr osErr = PMSAMLogError((MSAMParam *)&pb);
- }
-
-
- #ifdef JUNK
- // Do we do something like this?
- if( logEntry.errorCode == kMailELECorrectable )
- if( slot == 0 )
- gApplication->SuspendPMSAM();
- else
- slot->Suspend();
- #endif
-
-
- }
-